package eightDataType;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class DoubleDemo {
	public static void main(String[] args) {
		// System.out.println(formatPointNum(-555.1555, -1));

		// Double cny = Double.parseDouble(price_CNY);//6.2041 这个是转为double类型
		// DecimalFormat df = new DecimalFormat("0.00");
		// String CNY = df.format(cny); //6.20 这个是字符串，但已经是我要的两位小数了
		// Log.i(TAG, CNY);
		// Double cny = Double.parseDouble(CNY); //6.20
		double mathFourPoint = mathFourPoint(0);
		System.out.println(mathFourPoint);
	}

	// 保留2位小数
	public static double mathTwoPoint(double d) {
		DecimalFormat df = new DecimalFormat("0.00");
		String CNY = df.format(d); // 6.20 这个是字符串，但已经是我要的两位小数了
		return Double.parseDouble(CNY);
	}

	// 格式化保留小数位数
	public static double formatPointNum(double d, int numPoint) {
		// 旧方法，已经不再推荐使用
		// BigDecimal bg = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);

		// 新方法，如果不需要四舍五入，可以使用RoundingMode.DOWN
		// BigDecimal bg = new BigDecimal(d).setScale(numPoint, RoundingMode.UP);
		BigDecimal bg = new BigDecimal(d).setScale(numPoint, BigDecimal.ROUND_HALF_UP);
		return bg.doubleValue();
	}

	public static double mathFourPoint(double d) {

		// DecimalFormat df = new DecimalFormat("0.000");
		// String CNY = df.format(d); //6.20 这个是字符串，但已经是我要的两位小数了
		Double temp = 0.0000;
		try {
			BigDecimal bg = new BigDecimal(d);
			temp = bg.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
			// temp = Double.parseDouble(CNY);
		} catch (NumberFormatException e) {
			e.printStackTrace();
			System.out.println();
			return 0.0000;
		}
		return temp;
	}
}
